It is known to author or generate animation for one or more virtual objects (also termed “characters”) that are located in a virtual environment, such as a three dimensional virtual environment of a video game or visual effects tool. Those characters can consist of a hierarchy of joints, or “rig”, forming a skeleton which is used to animate a skin or mesh (as defined in US Patent Application Publication US 2010/0207949 A1, published 19 Aug. 2010, which is hereby incorporated in its entirety by reference). The characters may also have associated with them a physics definition in order to have a counterpart within a physics simulation which can influence the character's virtual environment via simulated physical interaction such as collision, and/or be influenced by such interactions and by the action of physical laws on the bodies comprised in the physics simulation.
Traditional animation techniques involve creating a sequence of joint geometries in an animation tool, which geometries specify the pose of the character at any given time instance. Those pre-authored animations can be blended and combined in various ways to produce a live animation at runtime.
Procedural animation involves generating new animation at runtime based on requirements (such as user control input and feedback from a physics simulation), and is particularly useful when the environment is dynamic or otherwise unpredictable. Inverse kinematics (as defined in US Patent Application publication US 2011/0267356 A1, published 3 Nov. 2011, which is hereby incorporated in its entirety by reference) is an example of a procedural tool that can be used to generate realistic interactions between a character and the environment. For instance, the character's legs may be manipulated to adjust foot placement for uneven terrain; its hands may be moved to reach and interact with objects; or its head and spine may be rotated to adjust gaze to fixate on other characters or other points of interest.
In one example, inverse-kinematic control involves specifying, for one or more object parts of a virtual object, a desired configuration (or pose/posture) for those object parts. An inverse-kinematics controller then calculates a configuration for the joints of the virtual object that would cause the one or more object parts to have a position and orientation such that the one or more object parts become as near coincident with the desired configuration as possible. One or more animation steps may be generated to animate movement of the object parts to the calculated configuration.
More sophisticated computation may be used to add more autonomy to the character so that the programmer or artist need not specify what actions to perform on a frame by frame basis; instead the character can be infused with a range of abilities (e.g. predefined functions in the form of software procedures) which autonomously control the character's motion in a way appropriate to its circumstances. For example, a balancing system allows the character to adjust its stance or take steps to retain an upright posture in the presence of external forces or other destabilising influences. A hazard protection system gives the character the ability to detect approaching objects and defend against them by, for instance, raising the arms, pushing the object away, or dodging to the side. By way of further example, a wound response system might sense collisions and have the character reach for the damaged body part while exhibiting other actions representing pain or distress. These abilities generate the above described desired configuration, which is used by the Inverse Kinematics controller.
It would be desirable to make the generation of animations easier and quicker.